package user

import (
	"go-init/dao"
	"go-init/lib/ctx"
	"go-init/lib/log"
	"go-init/lib/tool"

	"github.com/gin-gonic/gin"
	jsoniter "github.com/json-iterator/go"
)

// UserOperateRecordGet
// @tags user
// @Summary 根据id获取user_operate_record信息
// @Description 根据id获取user_operate_record信息
// @Accept  json
// @Produce  json
// @Param id query string true "user_operate_recordid"
// @Success 200 {object} dao.UserOperateRecord
// @Failure 400 {object} ctx.R
// @Router /api/user/user_operate_record_get [get]
func (u *USER) UserOperateRecordGet(c *ctx.Context) {
	qs := dao.NewQs()
	qs.Add("a.id=?", c.Query("id"))
	data, err := dao.UserOperateRecordo(qs)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	c.JSON(200, data)
}

// UserOperateRecordGets
// @tags user
// @Summary 获取user_operate_record列表
// @Description 获取user_operate_record列表
// @Accept  json
// @Produce  json
// @Success 200 {array} dao.UserOperateRecord
// @Failure 400 {object} ctx.R
// @Router /api/user/user_operate_record_gets [get]
func (u *USER) UserOperateRecordGets(c *ctx.Context) {
	other := c.PageHandle()
	qs := dao.NewQs()
	qsa := []string{"user_operate_id", "user_operate_table_id", "user_id", "data_id"}
	c.QuerySetArray(qs, qsa)
	c.QuerySet(qs, "a.create_time>=?", "stime")
	c.QuerySet(qs, "a.create_time<=?", "etime")
	data, err := dao.UserOperateRecords(qs, other)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	c.JSON(200, gin.H{"data": data, "totalCount": dao.Count("user_operate_record", qs)})
}

// UserOperateRecordSave
// @tags user
// @Summary 添加或更新user_operate_record
// @Description 添加或更新user_operate_record
// @Accept  x-www-form-urlencoded
// @Produce  json
// @Param document body dao.UserOperateRecord true "user_operate_record信息"
// @Success 200 {array} ctx.R "结果"
// @Router /api/user/user_operate_record_save [post]
func (u *USER) UserOperateRecordSave(c *ctx.Context) {
	var pd dao.UserOperateRecord
	data := c.PostForm("data")
	err := jsoniter.Unmarshal([]byte(data), &pd)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	tool.SetDCM(&pd)
	id, err := dao.InsertOrUpdate(&pd)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	c.JSON(200, ctx.R{Status: 1, Data: id})
}

// UserOperateGet
// @tags user
// @Summary 根据id获取user_operate信息
// @Description 根据id获取user_operate信息
// @Accept  json
// @Produce  json
// @Param id query string true "user_operateid"
// @Success 200 {object} dao.UserOperate
// @Failure 400 {object} ctx.R
// @Router /api/user/user_operate_get [get]
func (u *USER) UserOperateGet(c *ctx.Context) {
	qs := dao.NewQs()
	qs.Add("a.id=?", c.Query("id"))
	data, err := dao.UserOperateo(qs)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	c.JSON(200, data)
}

// UserOperateGets
// @tags user
// @Summary 获取user_operate列表
// @Description 获取user_operate列表
// @Accept  json
// @Produce  json
// @Success 200 {array} dao.UserOperate
// @Failure 400 {object} ctx.R
// @Router /api/user/user_operate_gets [get]
func (u *USER) UserOperateGets(c *ctx.Context) {
	other := c.PageHandle()
	qs := dao.NewQs()
	data, err := dao.UserOperates(qs, other)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	c.JSON(200, gin.H{"data": data, "totalCount": dao.Count("user_operate", qs)})
}

// UserOperateSave
// @tags user
// @Summary 添加或更新user_operate
// @Description 添加或更新user_operate
// @Accept  x-www-form-urlencoded
// @Produce  json
// @Param document body dao.UserOperate true "user_operate信息"
// @Success 200 {array} ctx.R "结果"
// @Router /api/user/user_operate_save [post]
func (u *USER) UserOperateSave(c *ctx.Context) {
	var pd dao.UserOperate
	data := c.PostForm("data")
	err := jsoniter.Unmarshal([]byte(data), &pd)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	tool.SetDCM(&pd)
	id, err := dao.InsertOrUpdate(&pd)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	c.JSON(200, ctx.R{Status: 1, Data: id})
}

// UserOperateTableGet
// @tags user
// @Summary 根据id获取user_operate_table信息
// @Description 根据id获取user_operate_table信息
// @Accept  json
// @Produce  json
// @Param id query string true "user_operate_tableid"
// @Success 200 {object} dao.UserOperateTable
// @Failure 400 {object} ctx.R
// @Router /api/user/user_operate_table_get [get]
func (u *USER) UserOperateTableGet(c *ctx.Context) {
	qs := dao.NewQs()
	qs.Add("a.id=?", c.Query("id"))
	data, err := dao.UserOperateTableo(qs)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	c.JSON(200, data)
}

// UserOperateTableGets
// @tags user
// @Summary 获取user_operate_table列表
// @Description 获取user_operate_table列表
// @Accept  json
// @Produce  json
// @Success 200 {array} dao.UserOperateTable
// @Failure 400 {object} ctx.R
// @Router /api/user/user_operate_table_gets [get]
func (u *USER) UserOperateTableGets(c *ctx.Context) {
	other := c.PageHandle()
	qs := dao.NewQs()
	data, err := dao.UserOperateTables(qs, other)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	c.JSON(200, gin.H{"data": data, "totalCount": dao.Count("user_operate_table", qs)})
}

// UserOperateTableSave
// @tags user
// @Summary 添加或更新user_operate_table
// @Description 添加或更新user_operate_table
// @Accept  x-www-form-urlencoded
// @Produce  json
// @Param document body dao.UserOperateTable true "user_operate_table信息"
// @Success 200 {array} ctx.R "结果"
// @Router /api/user/user_operate_table_save [post]
func (u *USER) UserOperateTableSave(c *ctx.Context) {
	var pd dao.UserOperateTable
	data := c.PostForm("data")
	err := jsoniter.Unmarshal([]byte(data), &pd)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	tool.SetDCM(&pd)
	id, err := dao.InsertOrUpdate(&pd)
	if c.HandlerError(err) {
		log.Error(err)
		return
	}
	c.JSON(200, ctx.R{Status: 1, Data: id})
}
